<?php

class Doctrine_Model_MovimientoDao extends Doctrine_Model_BaseDao {

    public function obtenerTodos() {
        return $this->getEntityManager()
                        ->createQuery('select m from Doctrine_Model_Entities_Movimiento m')
                        ->getResult();
    }

    public function obtenerTodasLasEntradas() {
        return $this->getEntityManager()
                        ->createQuery('select m from Doctrine_Model_Entities_Entrada m')
                        ->getResult();
    }

    public function obtenerTodasLasSalidas() {
        return $this->getEntityManager()
                        ->createQuery('select m from Doctrine_Model_Entities_Salida m')
                        ->getResult();
    }

    public function obtenerPorId($id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Movimiento', $id);
    }

    public function guardar(Doctrine_Model_Entities_Movimiento $unMovimiento) {
        try {
            $this->getEntityManager()->persist($unMovimiento);
            $this->getEntityManager()->flush();
        } catch (Exception $e) {
            echo ($e->xdebug_message);
            $logger = Zend_Registry::get('logger');
            $logger->log("Error:" . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
        return true;
    }

    public function eliminar(Doctrine_Model_Entities_Persona $unMovimiento) {
        try {
            $this->getEntityManager()->remove($unMovimiento);
            $this->getEntityManager()->flush();

            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');

            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function obtenerEnrtadasEntreFechas($inicio, $fin, $sucursalId, $categoria_id =  0) {
        if ($categoria_id != 0) {
            $sql = "select e from Doctrine_Model_Entities_Entrada e JOIN e.usuario u JOIN u.sucursal s  JOIN e.categoria c  where  e.fecha>='" . $inicio . "'  AND e.fecha<='" . $fin . "'  and s.id=" . $sucursalId . " AND c.id=".$categoria_id." order by e.fecha asc";
        } else {
            $sql = "select e from Doctrine_Model_Entities_Entrada e JOIN e.usuario u JOIN u.sucursal s   where  e.fecha>='" . $inicio . "' AND e.fecha<='" . $fin . "'   and s.id=" . $sucursalId . " order by e.fecha asc";
        }
        if (isset($inicio) && isset($fin)) {

            $result = $this->getEntityManager()
                    ->createQuery($sql)
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }

    public function obtenerTotaldeMovimientosHasta($fecha, $sucursalId, $categoria_id = 0) {

        if ($categoria_id != 0) {
            $sql = "SELECT m FROM Doctrine_Model_Entities_Movimiento m "
                    . "JOIN m.usuario u "
                    . "JOIN u.sucursal s "
                    . "JOIN m.categoria c "
                . "WHERE m.fecha <= '{$fecha}' "
                . "AND s.id = {$sucursalId} "
                . "AND c.id = {$categoria_id} "
                . "ORDER BY m.fecha ASC ";
        } else {
            $sql = "SELECT m FROM Doctrine_Model_Entities_Movimiento m "
                    . "JOIN m.usuario u "
                    . "JOIN u.sucursal s "
                    . "JOIN m.categoria c "
                . "WHERE m.fecha <= '{$fecha}' "
                . "AND s.id = {$sucursalId} "
                . "ORDER BY m.fecha ASC ";
        }
        
        if (isset($fecha)) {

            $result = $this->getEntityManager()
                    ->createQuery($sql)
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }

    public function obtenerSalidasEntreFechas($inicio, $fin, $sucursalId, $categoria_id = 0) {
         if ($categoria_id != 0) {
            $sql = "select s from Doctrine_Model_Entities_Salida s JOIN s.categoria c  JOIN s.usuario u JOIN u.sucursal su where  s.fecha>='" . $inicio . "' AND s.fecha<='" . $fin . "' AND c.id=".$categoria_id." and su.id=" . $sucursalId . "  order by s.fecha asc";
        } else {
            $sql = "select s from Doctrine_Model_Entities_Salida s JOIN s.usuario u JOIN u.sucursal su  where  s.fecha>='" . $inicio . "' AND s.fecha<='" . $fin . "' and su.id=" . $sucursalId . " order by s.fecha asc";
        }
        if (isset($inicio) && isset($fin)) {
            $result = $this->getEntityManager()
                    ->createQuery($sql)
                    ->getResult();
            return $result;
        } else {
            return NULL;
        }
    }

}

